home *** CD-ROM | disk | FTP | other *** search
/ Gekikoh Dennoh Club 1 / Gekikoh Dennoh Club Vol. 1 (Japan).7z / Gekikoh Dennoh Club Vol. 1 (Japan) (Track 1).bin / kowin / archive / sys / kowin14d.lzh / doc / original / event.doc next >
Text File  |  1991-07-04  |  8KB  |  202 lines

  1.  
  2.  
  3.         ウインドウシステム
  4.         イベント処理関数仕様            version 2.23
  5.  
  6.         Copyright       T.Kobayashi
  7.                         1991.5.3
  8.  
  9.  
  10.  
  11.  ウインドウを新たにオープンするとイベント処理関数を設定する必要があります。
  12. ウインドウを描き直す必要が生じた時、ウインドウが移動した時、マウス、キー入力
  13. の外部的なイベントが発生した時などにイベント処理関数が呼び出されます。
  14.  
  15. [例]
  16.     int     EventExec( wp, info );
  17.     WindowID    wp ;        /*  ウインドウID  */
  18.     EventInfo   *info ;     /*  イベント情報    */
  19.     {
  20.         int     n ;
  21.         DrawBuf buf[10] ;
  22.  
  23.         switch( info->option )          /*  イベントの種類  */
  24.         {
  25.             case EventOpen :            /*  ウインドウのオープン時に発生  */
  26.                 DrawSetClear( buf, 1 );
  27.                 DrawSetLine( buf+1, .... );
  28.                 ...
  29.                 ...
  30.                 WindowRedraw( wp );
  31.                 return( TRUE );
  32.             case EventRedraw :          /*  描き直し  */
  33.                 ...
  34.                 ...
  35.                 WindowDraw( wp, buf, n );
  36.                 return( TRUE );
  37.             case EventClose :           /*  クローズボックスが押された時  */
  38.                 WindowClose( wp );
  39.                 WindowConnectionClose();
  40.                 return( TRUE );
  41.             case EventMouseSwitch :     /*  マウスが押された時  */
  42.                 ...
  43.                 ...
  44.                 return( TRUE );
  45.         }
  46.         return( FALSE );
  47.     }
  48.  
  49.  (注意)イベント処理関数はウインドウがイベントを受け取った時は TRUE 、受け
  50.           取らなかった時はFALSE を返します。
  51.  
  52.  
  53. EventInfo は wlib.h で次のように定義されています。
  54.  
  55.     typedef struct  {
  56.             EventOption option ;                /*  イベントの種類    */
  57.             int         x, y, h, v ;            /*  座標、大きさ      */
  58.             int         RightStat, LeftStat ;   /*  スイッチの状態    */
  59.             int         LeftON, LeftOFF ;       /*  スイッチの変化    */
  60.             int         RightON, RightOFF ;
  61.             int         MoveFlag ;              /*  マウスの移動      */
  62.             int         KeyCode ;               /*  キーコード        */
  63.             int         ShiftStat ;             /*  シフトキーの状態  */
  64.             int         Counter ;               /*  カウンタ          */
  65.             int         ComData ;               /*  通信データ        */
  66.             void        *ComBuffer ;            /*  通信バッファ      */
  67.         }
  68.             EventInfo ;
  69.  
  70.     typedef enum {
  71.             EventOpen,          /*  初期化              */
  72.             EventRedraw,        /*  描き直し            */
  73.             EventClose,         /*  クローズ            */
  74.             EventPop,           /*  ポップ              */
  75.             EventPush,          /*  プッシュ            */
  76.             EventMove,          /*  移動                */
  77.             EventResize,        /*  変形                */
  78.             EventIconify,       /*  アイコン化          */
  79.             EventZoom,          /*  拡大                */
  80.             EventScroll,        /*  スクロール          */
  81.             EventMouseSwitch,   /*  マウスのスイッチ    */
  82.             EventMouseMove,     /*  マウスの移動        */
  83.             EventMouseEnter,    /*  マウスの移動        */
  84.             EventMouseOut,      /*  マウスの移動        */
  85.             EventKey,           /*  キー入力            */
  86.             EventInterval,      /*  タイマイベント      */
  87.             EventNon,           /*  イベントなし        */
  88.             EventUser,          /*  ユーザイベント      */
  89.             EventGraphic,       /*  グラフィックモード  */
  90.         }
  91.             EventOption ;
  92.  
  93.  
  94. 以下にイベントの種類ごとに発生する条件とその時に設定される EventInfo のパラ
  95. メータを示します。ただし、発生する条件を満たしていてもそのイベントに対する
  96. イベント属性が設定されていなければこれらのイベントは発生しません。
  97.  
  98.   EventOpen
  99.      ウインドウがオープンされた時に、一度だけ発生するイベントです。イベント
  100.     処理ルーチン内ではウインドウの各種パラメータの初期化を行わなければなりま
  101.     せん。まだ画面に表示されていないので WindowDraw 関数は実行できません。最
  102.     後に WindowRedraw 関数を実行するとオープンするとオープンすると同時に表示
  103.     されるようになります。
  104.      x , y はウインドウの左上座標、h , v はウインドウの大きさです。
  105.  
  106.   EventRedraw
  107.      ウインドウが移動したりして描き直す必要が生じた時に発生します。このイベ
  108.     ントに対する処理は必ず定義しなければなりません。(これがなければウインド
  109.     ウは画面に見えません。)
  110.      x , y は描き直し領域の左上座標、h , v は描き直し領域の大きさです。ウイ
  111.     ンドウサーバ内でクリッピングするので描き直し領域より大きく描画してもかま
  112.     いません。
  113.  
  114.   EventClose
  115.      クローズボックスが押された時と、ウインドウプログラムが終了しようとした
  116.     時、 KILL シグナルを受け取った時に発生します。
  117.  
  118.   EventPop
  119.      タイトルバーでマウスをクリックした時に発生します。
  120.      (注意)デフォルトのイベント属性ではこのイベントは発生しません。
  121.  
  122.   EventPush
  123.      プッシュボックスが押された時に発生します。
  124.      (注意)デフォルトのイベント属性ではこのイベントは発生しません。
  125.  
  126.   EventMove
  127.      タイトルバーでマウスを移動させた時に発生します。
  128.      x, y  にウインドウが移動するべき座標が設定されます。
  129.      (注意)デフォルトのイベント属性ではこのイベントは発生しません。
  130.  
  131.   EventResize
  132.      リサイズボックスでマウスを移動させた時に発生します。
  133.      x , y はウインドウが移動するべき座標、h , v にウインドウ変更されるべき
  134.     大きさです。
  135.  
  136.   EventIconify
  137.      アイコン化ボックスをクリックした時に発生します。
  138.  
  139.   EventZoom
  140.      ズームボックスをクリックした時に発生します。
  141.      h , v はウインドウ変更されるべき大きさです。移動するべき位置は (0,0)
  142.     です。
  143.  
  144.   EventScroll
  145.      スクロールウインドウにおいてスクロールバーでマウスがクリックされた時に
  146.     発生します。
  147.      x , y は変更されるべきホーム位置です。
  148.      (注意)デフォルトのイベント属性ではこのイベントは発生しません。
  149.  
  150.   EventMouseSwitch
  151.      マウスのスイッチを押した時、離した時、押したままマウスを移動した時に発
  152.     生します。
  153.      x , y はマウスのローカル座標、LeftStat, RightStat はそれぞれ左、右のボ
  154.     タンの状態( ON の時 TRUE です。)LeftON, LeftOFF, RightON, RightOFF  は
  155.     それぞれボタンを押した時、離した時のみ TRUE になります。MoveFlag  はマウ
  156.     スを移動させた時のみ TRUE になります。
  157.      このイベントはマウスの位置にあるウインドウに対してのみ発生し、その他の
  158.     ウインドウに対しては発生しません。また、ルートウインドウの直接の子ウイン
  159.     ドウに対してのみ発生し、さらにその子ウインドウにはイベント処理関数内から
  160.     WindowSendEvent 関数で送らなければなりません。イベント情報を送るべき子ウ
  161.     インドウは WindowGetChild 関数でみつけることができます。
  162.      EventMouseMove EventMouseEnter EventMouseOut EventKey の各イベントにつ
  163.     いても同じです。
  164.  
  165.   EventMouseMove
  166.      マウスのボタンを押さずに移動させた時に発生します。
  167.      x , y はマウスのローカル座標です。
  168.      (注意)デフォルトのイベント属性ではこのイベントは発生しません。
  169.  
  170.   EventMouseEnter
  171.      マウスがウインドウに入った時に発生します。
  172.  
  173.   EventMouseOut
  174.      マウスがウインドウから出た時に発生します。
  175.  
  176.   EventKey
  177.      キー入力があった時に発生します。
  178.      KeyCode は入力されたキーコード、ShiftStat はシフトキーの状態です。これ
  179.     は IOCS コール $02 で与えられるものと同じです。
  180.  
  181.   EventInterval
  182.      タイマーイベントです。他にイベントが発生しなかった時にすべてのウインド
  183.     ウに対して発生します。
  184.      タイマーイベントは手前にあるウインドウから順に発生し、その途中で他のイ
  185.     ベントが発生した時は中断されます。よって、奥のほうにあるウインドウではタ
  186.     イマーイベントが発生する頻度は小さくなります。
  187.      (注意)デフォルトのイベント属性ではこのイベントは発生しません。
  188.  
  189.   EventNon
  190.      ウインドウサーバ内部で使用。アプリケーションプログラムでは発生しません。
  191.  
  192.   EventUser
  193.      クライアントが発生させるイベントで、クライアント間通信に使用します。
  194.      ComData , ComBuffer に必要なデータを設定して発生させます。
  195.      (注意)デフォルトのイベント属性ではこのイベントは発生しません。
  196.  
  197.   EventGraphic
  198.        グラフィックモードが変更された時に発生します。x に変更後の画面モード
  199.       が設定されています。
  200.      (注意)デフォルトのイベント属性ではこのイベントは発生しません。
  201.  
  202.